<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Utildate{

	function Utildate(){
	
	}
	
function ordenarFecha( $a, $b ) {
	return strtotime($b['fechaemision']->format('Ymdhi')) - strtotime($a['fechaemision']->format('Ymdhi'));
}


function obtenerPeriodo(){
	switch(intval(date('m',time()))){
		case 1: return 'Enero/'.date('Y',time());break;
		case 2: return 'Febrero/'.date('Y',time());break;
		case 3: return 'Marzo/'.date('Y',time());break;
		case 4: return 'Abril/'.date('Y',time());break;
		case 5: return 'Mayo/'.date('Y',time());break;
		case 6: return 'Junio/'.date('Y',time());break;
		case 7: return 'Julio/'.date('Y',time());break;
		case 8: return 'Agosto/'.date('Y',time());break;
		case 9: return 'Setiembre/'.date('Y',time());break;
		case 10: return 'Octubre/'.date('Y',time());break;
		case 11: return 'Noviembre/'.date('Y',time());break;
		case 12: return 'Diciembre/'.date('Y',time());break;
	}
}

function obtenerPeriodoMesAnho($mes,$anho){
	switch($mes){
		case 1: return 'Enero/'.$anho;break;
		case 2: return 'Febrero/'.$anho;break;
		case 3: return 'Marzo/'.$anho;break;
		case 4: return 'Abril/'.$anho;break;
		case 5: return 'Mayo/'.$anho;break;
		case 6: return 'Junio/'.$anho;break;
		case 7: return 'Julio/'.$anho;break;
		case 8: return 'Agosto/'.$anho;break;
		case 9: return 'Setiembre/'.$anho;break;
		case 10: return 'Octubre/'.$anho;break;
		case 11: return 'Noviembre/'.$anho;break;
		case 12: return 'Diciembre/'.$anho;break;
	}
}


function obtenerMes($mes){
	switch($mes){
		case 1: return 'Enero';break;
		case 2: return 'Febrero';break;
		case 3: return 'Marzo';break;
		case 4: return 'Abril';break;
		case 5: return 'Mayo';break;
		case 6: return 'Junio';break;
		case 7: return 'Julio';break;
		case 8: return 'Agosto';break;
		case 9: return 'Setiembre';break;
		case 10: return 'Octubre';break;
		case 11: return 'Noviembre';break;
		case 12: return 'Diciembre';break;
	}
}


function fechaEnLetras($dia,$mes,$anho){
	switch($mes){
		case 1: return $dia.' de Enero '.$anho;break;
		case 2: return $dia.' de Febrero '.$anho;break;
		case 3: return $dia.' de Marzo '.$anho;break;
		case 4: return $dia.' de Abril '.$anho;break;
		case 5: return $dia.' de Mayo '.$anho;break;
		case 6: return $dia.' de Junio '.$anho;break;
		case 7: return $dia.' de Julio '.$anho;break;
		case 8: return $dia.' de Agosto '.$anho;break;
		case 9: return $dia.' de Setiembre '.$anho;break;
		case 10: return $dia.' de Octubre '.$anho;break;
		case 11: return $dia.' de Noviembre '.$anho;break;
		case 12: return $dia.' de Diciembre '.$anho;break;
	}

}

function getMonthDays($Month, $Year)
{
	//Si la extensión que mencioné está instalada, usamos esa.
	if( is_callable("cal_days_in_month"))
	{
		return cal_days_in_month(CAL_GREGORIAN, $Month, $Year);
	}
	else
	{
		//Lo hacemos a mi manera.
		return date("d",mktime(0,0,0,$Month+1,0,$Year));
	}
}

function obtenerFecha($dia,$mes,$anho){
	if(checkdate($dia,$mes,$anho)){
		return $dia.'-'.$mes.'-'.$anho;
	}else{
		if($dia>$this->getMonthDays($mes,$anho)){
			return $this->getMonthDays($mes,$anho).'-'.$mes.'-'.$anho;
		}else{
			return $dia.'-'.$mes.'-'.$anho;
		}

	}
		
}
function addDia($dia,$mes,$anho,$addDia){
	$arreglo['dia']=$dia;
	$arreglo['anho']=$anho;
	$arreglo['mes']=$mes;
	$fecha = date_create($anho.'-'.$mes.'-'.$dia);
	date_add($fecha, date_interval_create_from_date_string($addDia.' days'));
	return date_format($fecha, 'Y-m-d');
}


function addMes($mes,$anho,$addMes){
	$arreglo['mes']=$mes;
	$arreglo['anho']=$anho;
	$newMes=($mes+$addMes);
	if($newMes>12){
		$arreglo['mes']=$newMes%12;
		$arreglo['anho']=$anho+($newMes/12);
	}else{
		$arreglo['mes']=$newMes;
		$arreglo['anho']=$anho;
	}


	return $arreglo;
}
function reduceMes($mes,$anho,$reduceMes){
	$arreglo['mes']=$mes;
	$arreglo['anho']=$anho;
	$newMes=($mes-$reduceMes);
	if($newMes<=0){
		$arreglo['mes']=12+$newMes;
		$arreglo['anho']=$anho-1;
	}else{
		$arreglo['mes']=$newMes;
		$arreglo['anho']=$anho;
	}


	return $arreglo;
}

function obtenerFechaEmisionVencimiento($diaEmision,$diaVencimiento){
	//arreglo con cadenas
	$arreglo=NULL;
	if($diaEmision>$diaVencimiento){
		$cadenaEmision=$diaEmision.'-'.date('m-Y',time());
		$array=$this->addMes(date('m',time()),date('Y',time()),1);
		$cadenaVencimiento=$this->obtenerFecha($diaVencimiento,$array['mes'],$array['anho']);
	}else{
		$cadenaEmision=$diaEmision.'-'.date('m-Y',time());
		$cadenaVencimiento=$diaVencimiento.'-'.date('m-Y',time());

	}
		
	$arreglo['emision']=$cadenaEmision;
	$arreglo['vencimiento']=$cadenaVencimiento;
	return $arreglo;

}


function obtenerNuevaFechaReduce($dia,$mes,$anho,$reduceMes){
	//arreglo con cadenas
	$arreglo=$this->reduceMes($mes,$anho,$reduceMes);
	$cadenaFecha=$this->obtenerFecha($dia,$arreglo['mes'],$arreglo['anho']);
	return $cadenaFecha;
}

function dateDifference($date_1 , $date_2 , $differenceFormat = '%a' ){
	$datetime1 = date_create($date_1);
	$datetime2 = date_create($date_2);

	$interval = date_diff($datetime1, $datetime2);

	return $interval->format($differenceFormat);

}

function toFechaPeru($fecha){
	$f=explode('-',$fecha);
	return $f[2].'-'.$f[1].'-'.$f[0];
}

function calculaedad($fechanacimiento){
	list($ano,$mes,$dia) = explode("-",$fechanacimiento);
	$ano_diferencia  = date("Y") - $ano;
	$mes_diferencia = date("m") - $mes;
	$dia_diferencia   = date("d") - $dia;
	if ($dia_diferencia < 0 || $mes_diferencia < 0)
		$ano_diferencia--;
	return $ano_diferencia;
}

}